/*--------------------------------*- C++ -*----------------------------------*\
  =========                 |
  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
   \\    /   O peration     | Website:  https://openfoam.org
    \\  /    A nd           | Version:  dev
     \\/     M anipulation  |
\*---------------------------------------------------------------------------*/
FoamFile
{
    format      ascii;
    class       dictionary;
    location    "templates/system/fluid";
    object      fvSchemes;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

ddtSchemes
{
    // For transient, replace steadyState, e.g. with Euler
    default         steadyState;
}

gradSchemes
{
    default         Gauss linear;

    limited         cellLimited Gauss linear 1;
    grad(U)         $limited;
    grad(k)         $limited;
    grad(omega)     $limited;
    grad(epsilon)   $limited;
}

divSchemes
{
    default         none;

    // For steady-state, use the bounded form of advection schemes
#ifeq ($!ddtSchemes/default steadyState)
    div(phi,U)      bounded Gauss linearUpwind limited;
    turbulence      bounded Gauss limitedLinear 1;
#else
    div(phi,U)      Gauss linearUpwind limited;
    turbulence      Gauss limitedLinear 1;
#endif

    // Schemes for incompressible solvers
    div(phi,k)      $turbulence;
    div(phi,omega)  $turbulence;
    div(phi,epsilon) $turbulence;
    div((nuEff*dev2(T(grad(U))))) Gauss linear;

    // Additional schemes for compressible solvers
    div(phi,e)      $turbulence;
    div(phi,h)      $turbulence;
    div(phi,K)      $turbulence;
    div(phi,Ekp)    $turbulence;

    div(phid,p)     Gauss upwind;
#ifeq ($!ddtSchemes/default steadyState)
    div(phi,(p|rho)) bounded Gauss upwind;
    div(Ji,Ii_h)    bounded Gauss linearUpwind grad(Ii_h);
#else
    div(phi,(p|rho)) Gauss upwind;
    div(Ji,Ii_h)    Gauss linearUpwind grad(Ii_h);
#endif

    div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear;
}

laplacianSchemes
{
    default         Gauss linear corrected;
}

interpolationSchemes
{
    default         linear;
}

snGradSchemes
{
    default         corrected;
}

fluxRequired
{
    default         no;
    p                 ;
}

wallDist
{
    method meshWave;
}

// ************************************************************************* //
